using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Srvtools;

namespace cLimLoanR
{
    public partial class Form1 : InfoForm
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //隱藏Detail的鍵值欄位
            this.nOVOUDataGridViewTextBoxColumn1.Visible = false;
        }

        private void infoDataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
        ////////////
        public string GetToday()
        {
            return string.Format("{0:yyyyMMdd}", DateTime.Today);
        }

        public string GetNowTime()
        {

            return string.Format("{0:hhmmss}", DateTime.Now);
        }

        public string GetUser()
        {
            return CliUtils.fLoginUser;
        }

        private void bindingNavigatorEditItem_Click(object sender, EventArgs e)
        {
            //以string儲存,在按下修改時
            ((DataRowView)ibsMaster.Current)["UPDATE_USER"] = CliUtils.fLoginUser;
            ((DataRowView)ibsMaster.Current)["UPDATE_DATE"] = string.Format("{0:yyyyMMdd}", DateTime.Now.Date);
            ((DataRowView)ibsMaster.Current)["UPDATE_TIME"] = string.Format("{0:hhmmss}", DateTime.Now); 

        }

        private void ibsMaster_CurrentChanged(object sender, EventArgs e)
        {
           string state = infoNavigator1.GetCurrentState();
           if (state == "Inserting" || state == "Editing" || state == "Initial" || state == "Browsed")
           {
               //修改時間顯示
               string UPDATE_TIME = ((DataRowView)ibsMaster.Current)["UPDATE_TIME"].ToString();
               if (UPDATE_TIME.Length == 6)
                infoTextBox5.Text = Convert.ToDateTime(UPDATE_TIME.Substring(0, 2) + ":" + UPDATE_TIME.Substring(2, 2) + ":" + UPDATE_TIME.Substring(4, 2)).ToLongTimeString(); 
               else if (UPDATE_TIME.Length == 0)
                   infoTextBox5.Text = "";

               //建檔時間顯示
               string CREATE_TIME = ((DataRowView)ibsMaster.Current)["CREATE_TIME"].ToString();
               if (CREATE_TIME.Length == 6)
                infoTextBox3.Text = Convert.ToDateTime(CREATE_TIME.Substring(0, 2) + ":" + CREATE_TIME.Substring(2, 2) + ":" + CREATE_TIME.Substring(4, 2)).ToLongTimeString(); 
               else if (CREATE_TIME.Length == 0)
                   infoTextBox3.Text = "";
           }

        }

        private void ibsMaster_AddingNew(object sender, AddingNewEventArgs e)
        {         
            //在新增就顯示建檔時間  
            infoTextBox3.Text = DateTime.Now.ToLongTimeString();
        }

        public string GetCUST()
        {
            return InfoTextBox12.Text;
        }

        private void infoDataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {

            if ((infoNavigator1.GetCurrentState() == "Inserting") || (infoNavigator1.GetCurrentState() == "Editing"))
            {
                float AM_AMT = 0, QT_QTY = 0, QT_QTY_TEMP;

                string Qty = infoDataGridView1.Columns[e.ColumnIndex].DataPropertyName.ToString();
                if (Qty == "QT_QTY")  
                {
                    //QT_QTY不能大於QT_QTY_TEMP
                    QT_QTY = float.Parse(((DataRowView)ibsDetail.Current)["QT_QTY"].ToString());
                    QT_QTY_TEMP = float.Parse(((DataRowView)ibsDetail.Current)["QT_QTY_TEMP"].ToString());
                    if (QT_QTY > QT_QTY_TEMP)
                    {
                        System.Windows.Forms.MessageBox.Show("歸還數量超過!");
                        ((DataRowView)ibsDetail.Current)["QT_QTY"] = infoDataGridView1[7, e.RowIndex].Value;
                    }

                    //計算實售金額＝數量*售價 
                    AM_AMT = float.Parse(((DataRowView)ibsDetail.Current)["PR_COST"].ToString());
                    AM_AMT = AM_AMT * float.Parse(((DataRowView)ibsDetail.Current)["QT_QTY"].ToString());
                    ((DataRowView)ibsDetail.Current)["AM_COST"] = AM_AMT.ToString();
                    ibsDetail.EndEdit();
                   
                }
            }             
        }

    

        private void InfoRefValBox1_Leave(object sender, EventArgs e)
        {
            //在選定Refval之後帶入多筆明細  
            string stat = infoNavigator1.GetCurrentState();
            if (stat == "Inserting" || stat == "Editing")
            {
                ((DataRowView)ibsMaster.Current).EndEdit(); //使明細帶入的時候不會出現Key值錯誤                   
                dsLOAN_D.SetWhere("NO_VOU = '" + InfoRefValBox1.TextBoxSelectedValue + "'");

                //清除明細內容
                int n = ibsDetail.List.Count;
                for (int i = 0; i < n; i++)
                {
                    ibsDetail.List.RemoveAt(0);
                }
                //將所要的明細插入  
                DataRow dr = null;
                double QT_QTY = 0, QT_QTY_END = 0, PR_COST = 0, AM_COST = 0;

                for (int i = 0; i < dsLOAN_D.RealDataSet.Tables[0].Rows.Count; i++)
                {
                    QT_QTY = Convert.ToDouble(dsLOAN_D.RealDataSet.Tables[0].Rows[i]["QT_QTY"]);
                    QT_QTY_END = Convert.ToDouble(dsLOAN_D.RealDataSet.Tables[0].Rows[i]["QT_QTY_END"]);


                    //每筆重算總金額
                    PR_COST = Convert.ToDouble(dsLOAN_D.RealDataSet.Tables[0].Rows[i]["PR_COST"].ToString());
                    AM_COST = QT_QTY * PR_COST;
                    if (QT_QTY - QT_QTY_END <= 0)//如果數量為0,則不帶出明細
                    { }
                    else
                    {
                        dr = Master.RealDataSet.Tables[1].NewRow();
                        dr["CN_SEQ2"] = dsLOAN_D.RealDataSet.Tables[0].Rows[i]["CN_SEQ2"];
                        dr["QT_QTY"] = dsLOAN_D.RealDataSet.Tables[0].Rows[i]["QT_QTY"];
                        dr["NO_VOU"] = InfoTextBox01.Text;
                        dr["QT_QTY_TEMP"] = dsLOAN_D.RealDataSet.Tables[0].Rows[i]["QT_QTY"];                                                
                        dr["PR_COST"] = dsLOAN_D.RealDataSet.Tables[0].Rows[i]["PR_COST"].ToString();
                        dr["NO_ITEM"] = dsLOAN_D.RealDataSet.Tables[0].Rows[i]["NO_ITEM"].ToString();
                        dr["NM_ITEM"] = dsLOAN_D.RealDataSet.Tables[0].Rows[i]["NM_ITEM"].ToString();
                        dr["AM_COST"] = AM_COST.ToString();
                        Master.RealDataSet.Tables[1].Rows.Add(dr);
                    }
                }
                if (ibsDetail.List.Count == 0)
                { System.Windows.Forms.MessageBox.Show("此倉庫已被領取完!"); }

            }
            else if ((stat != "Inserting") && (stat != "Editing"))
            { return; }
            
        }

        private void ibsMaster_AfterEdit(object sender, EventArgs e)
        {
            //以string儲存
            ((DataRowView)ibsMaster.Current)["UPDATE_USER"] = CliUtils.fLoginUser;
            ((DataRowView)ibsMaster.Current)["UPDATE_DATE"] = string.Format("{0:yyyyMMdd}", DateTime.Now.Date);
            ((DataRowView)ibsMaster.Current)["UPDATE_TIME"] = string.Format("{0:hhmmss}", DateTime.Now);

        }

        private void infoDataGridView2_Click(object sender, EventArgs e)
        {
            //重新設定明細欄位的ReadOnly屬性(因為使用AutoDisableControl會造成回歸預設值False)
            this.infoDataGridView2.ReadOnly = true;
        }

        private void infoDataGridView1_Click(object sender, EventArgs e)
        {
            //重新設定明細欄位的ReadOnly屬性(因為使用AutoDisableControl會造成回歸預設值False)
            this.nOVOUDataGridViewTextBoxColumn1.ReadOnly = true;
            this.cNSEQDataGridViewTextBoxColumn.ReadOnly = true;
            this.nOITEMDataGridViewTextBoxColumn.ReadOnly = true;
            this.nMITEMDataGridViewTextBoxColumn.ReadOnly = true;
            this.pRCOSTDataGridViewTextBoxColumn.ReadOnly = true;
            this.aMCOSTDataGridViewTextBoxColumn.ReadOnly = true;
        }

        private void ibsDetail_BeforeEdit(object sender, EventArgs e)
        {
            //記錄Detail的修改時間日期
            ((DataRowView)ibsDetail.Current)["UPDATE_USER"] = CliUtils.fLoginUser;
            ((DataRowView)ibsDetail.Current)["UPDATE_DATE"] = string.Format("{0:yyyyMMdd}", DateTime.Now.Date);
            ((DataRowView)ibsDetail.Current)["UPDATE_TIME"] = string.Format("{0:hhmmss}", DateTime.Now);
        }

        private void infoNavigator1_StateChanged(object sender, InfoNavigatorStateChangedEventArgs e)
        {
            //將DateTimePicker設為不可改
            this.InfoDateTimePicker01.Enabled = false;
            this.InfoDateTimePicker11.Enabled = false;
        }

        private void bindingNavigatorAddNewItem_MouseUp(object sender, MouseEventArgs e)
        {
            //將DateTimePicker設為不可改
            this.InfoDateTimePicker01.Enabled = false;
            this.InfoDateTimePicker11.Enabled = false;
        }

    }
}

